/**
 * 
 */
package de.uni_leipzig.informatik.asv.unsupervised_pos_tagger.data;
import it.unimi.dsi.fastutil.ints.IntIterator;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Iterator;
import de.uni_leipzig.informatik.asv.util.MixingIterator;
/**
 * 
 * @author Christoph Teichmann
 * created May 30, 2014 11:39:07 AM
 * @version 0.1
 */
public interface WordCorpus extends Iterable<Word>
{
	/* (non-Javadoc)
	 * @see java.lang.Iterable#iterator()
	 */
	public abstract Iterator<Word> iterator();
	/**
	 * 
	 *
	 * @return
	 */
	public abstract MixingIterator<Word> mIterator();
	/**
	 * 
	 *
	 * @param br
	 * @throws IOException
	 */
	public abstract void addWordsAndConnections(BufferedReader words, BufferedReader connections) 
																	throws IOException;
	/**
	 * 
	 *
	 * @param br
	 * @throws IOException 
	 */
	public abstract void addFeatures(BufferedReader br) throws IOException;
	/**
	 *
	 * @param label
	 * @return
	 */
	public abstract int getFeatureGroup(int label);
	/**
	 *
	 * @return
	 */
	public abstract IntIterator getLanguageIterator();
	/**
	 *
	 * @param lang
	 * @return
	 */
	public abstract String getLanguageName(int lang);
	/**
	 *
	 * @param identity
	 * @return
	 */
	public abstract String getName(int identity);
}